1. The Field of the Invention
The present invention relates to networking technologies; and more specifically, to the tracking of progress through a message exchange pattern to thereby avoid the exchange of messages that are invalid given the tracked progress in the message exchange pattern.
2. Background and Related Art
Computing technology has transformed the way we work and play. Computing systems now take a wide variety of forms including desktop computers, laptop computers, tablet PCs, Personal Digital Assistants (PDAs), and the like. Even household devices (such as refrigerators, ovens, sewing machines, security systems, and the like) have varying levels of processing capability and thus may be considered computing systems.
Much of the functionality provided by computing systems relies on the computing system being networked with (i.e., able to communicate messages with) other computing systems. In order for the two communicating computing systems to accomplish a particular task, a number of message exchanges may be needed.
There is often a predicable and expected pattern of message exchange between the two computing systems in order to accomplish a particular task. For example, in accordance with an arbitrary example message exchange pattern, a first computing system may transmit a first kind of message to the second computing system. In response, the second computing system may then return to the first computing system a second or third type of message. If the first computing system receives the second type of message from the second computing system, the first computing system may terminate message exchange. If the second computing system receives the third type of message from the second computing system, the first computing system may transmit a fourth type of message. The message exchanges continue predictably through the message exchange pattern until the message exchange pattern warrants cessation in further message exchanges. Of course, each computing system performs appropriate processing in response to each message receipt.
Accordingly, depending on progress through a message exchange pattern, it may be appropriate for a computing system to transmit some types of messages, but not others. However, some applications running on the computing system may request transmission of inappropriate messages anyway. Typically, the computing system would transmit the message anyway if the application so requested. This would likely result in an error message being returned by the other computing system involved in the message exchange. Alternatively, the other computing system may simply drop the invalid message since it does not know how to handle the invalid message in the context of current progress through the message exchange pattern.
The transmission of the invalid message (and potentially the return of the error message) results in wasted processing and network resources since nothing is actually accomplished towards furthering the goal enabled by the proper message exchange pattern. Furthermore, in message exchange patterns that are long term representing long-running activities, it may take some time for the computing system that transmitted the invalid message to realize that it committed an error, or to realize that the message exchange has terminated in a failed attempt at the goal.
Accordingly, what would be advantageous are mechanisms in which there is efficient message transmission between computing systems engaged in a message exchange pattern even if an application on one of the computing systems requests transmission of a message that is invalid for the message exchange pattern. Furthermore, it would be advantageous if the application requesting the invalid message transmission learned in a more timely fashion that the invalid message was not acceptable for the current progress in the message exchange pattern.